package com.spsa.vista.controladores.dialogos;

import java.util.ArrayList;
import java.util.LinkedHashSet;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.context.FacesContext;

import org.primefaces.context.RequestContext;

import com.spsa.negocio.utilidades.SingletonDatos;
import com.spsa.persistencia.entidades.Interfaz;
import com.spsa.persistencia.entidades.Tienda;

@ManagedBean(name="backGestorTiendas")
public class ControladorGestorTiendas {
	private Tienda tienda;
	private List<Interfaz> interfaces;
	private List<Interfaz> interfacesSel;
	@EJB
	private SingletonDatos singletonDatos;
	private boolean esNuevaTienda;
	
	@PostConstruct
	public void inicializar() {
		Object parametro = FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("tienda");
		
		if(parametro != null) {
			tienda = (Tienda) parametro; 
			interfacesSel = new ArrayList<Interfaz>(tienda.getInterfaces());
			esNuevaTienda = false;
		}
		else {
			esNuevaTienda = true;
			tienda = new Tienda();
			interfacesSel = new ArrayList<Interfaz>();
		}
		
		interfaces = singletonDatos.getInterfaces();
	}
	
	public void guardar() {
		for(int i = 0; i < interfacesSel.size(); i ++) {
			interfacesSel.get(i).getTiendas().add(tienda);
		}
		
		tienda.setInterfaces(new LinkedHashSet<Interfaz>(interfacesSel));
		RequestContext.getCurrentInstance().closeDialog(tienda);
	}
	
	public void cancelar() {
		RequestContext.getCurrentInstance().closeDialog(null);
	}

	public Tienda getTienda() {
		return tienda;
	}

	public void setTienda(Tienda tienda) {
		this.tienda = tienda;
	}

	public List<Interfaz> getInterfaces() {
		return interfaces;
	}

	public void setInterfaces(List<Interfaz> interfaces) {
		this.interfaces = interfaces;
	}

	public List<Interfaz> getInterfacesSel() {
		return interfacesSel;
	}

	public void setInterfacesSel(List<Interfaz> interfacesSel) {
		this.interfacesSel = interfacesSel;
	}

	public boolean isEsNuevaTienda() {
		return esNuevaTienda;
	}

	public void setEsNuevaTienda(boolean esNuevaTienda) {
		this.esNuevaTienda = esNuevaTienda;
	}
}
